Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Arreglos Multidimensionales (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com
Motivación
En muchas aplicaciones, se requiere organizar un gran número de datos en un arreglo cuyos elementos se distingan por medio de dos o más subíndices.

Ejemplos:
Matrices (subíndices: renglón, columna)
Imágenes (subíndices: posición (x,y) de un pixel)
Video (subíndices: posición (x,y) y tiempo t)
Señales electrofisiológicas (EEG, EKG, fMRI)

Monografias.com
Arreglos bidimensionales
Supongamos que nuestra aplicación requiere de arreglos organizados en forma de matriz, de manera que se haga referencia a cada elemento mediante dos subíndices.

En C/C++ existen dos técnicas para implementar este tipo de arreglos:

Arreglos de arreglos
Orden lexicográfico

Monografias.com
Arreglos de arreglos
int x[M][N];
x[0]
x[1]
x[M-1]

Monografias.com
Ejemplo: arreglos de arreglos
Suponga que se desea implementar un arreglo de M x N donde el elemento (i,j) sea igual a (i + j).

Solución #1: int i, j;int x[M][N];for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { x[i][j] = i + j; }}

Monografias.com
Orden lexicográfico
int x[M*N];
x

Monografias.com
Ejemplo: orden lexicográfico
int i, j;int x[M*N];for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { x[i*N+j] = i + j; }}

Monografias.com
Arreglos bidimensionales como argumentos
void muestra(int x[][10], int m) {
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < 10; j++) {
cout << x[i][j] << " ";
}
cout << endl;
}
}

int main() {
int x[10][10];
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
x[i][j] = i + j;
}
}
imprime(x, 10);
}

void muestra(int x[], int m, int n) {
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
cout << x[i*n+j] << " ";
}
cout << endl;
}
}

int main() {
int x[10*10];
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
x[i*10+j] = i + j;
}
}
imprime(x, 10, 10);
}

Arreglos de arreglos
Orden lexicográfico

Monografias.com
Comparación entre técnicas

Monografias.com
Arreglos multidimensionales
También es posible utilizar arreglos de más de dos dimensiones; es decir, arreglos en los cuales los elementos estén indexados mediante mas de dos subíndices.

Ejemplo: arreglos tridimensionales
// Técnica: arreglo de arreglos
// Declaración
int x[M][N][P];

// Acceso al elemento (i,j,k)
x[i][j][k] = 0;
// Técnica: orden lexicográfico
// Declaración
int x[M*N*P];

// Acceso al elemento (i,j,k)
x[i*N*P + j*P + k] = 0;

Monografias.com
Práctica
Las operaciones elementales de una matriz son:
Multiplicar el renglón i por una constante k.
Sumar al renglón i el renglón j multiplicado por k.
Intercambiar los renglones i y j.

Escriba tres funciones, una para cada operación elemental. Las funciones deben tomar como argumentos la matriz, sus dimensiones, y los parámetros requeridos para la operación.

Monografias.com
Práctica
Utilizando las funciones anteriores, implemente en una función el método de Gauss-Jordan para encontrar la solución del sistema Ax = b. La función debe tomar A, b, y el tamaño del sistema n como argumentos:

Iniciar con c = 0 y r = 0.
Mientras c < n y r < n, hacer
Sea j = arg max i = r,…,n-1 {A(i,c)}
Si r es distinto de j, intercambiar renglones r y j.
Multiplicar el renglón r por 1/A(r,c)
Si A(r,c) es distinto de cero
Para cada renglón i = r + 1, …, n, sumar al renglón i el resultado de multiplicar el renglón r por –A(i,c).
Incrementar r.
Incrementar c.
Para r desde n-1 hasta 0,
Para cada renglón i = 0,…,r-1, sumar al renglón i el resultado de multiplicar el renglón r por –A(i,r).

Monografias.com
Ejercicios
Elabore una función que realice el producto C = AB de dos matrices A de m x n y B de n x p. La función debe tomar como parámetros A, B, C, m, n y p.

Elabore una función que, dado el arreglo x[] de tamaño N, calcule el arreglo X[k] para k = 0,…,N-1, dado por:X[k] se conoce como la transformada discreta de Fourier (TDF) de x[n], y es una señal compleja la cual puede representarse como un arreglo de N x 2. Dada X[k], es posible recuperar x[n] mediante la transformada discreta inversa de Fourier (TDIF):Elabore una función que implemente la (TDIF) y verifique que ambas funciones son una inversa de la otra calculando el error cuadrático medio entre una señal de ruido aleatorio x[n], y la versión recuperada a partir de la TDIF de la TDF de x[n].

Monografias.com
Ejercicios
Considere dos variables aleatorias X y Y, que pueden tomar valores entre 0 y K-1. El histograma conjunto hij de X y Y es una matriz que representa el número de veces que se observa simultáneamente X=i y Y=j en una muestra. Escriba una función que tome como argumentos los arreglos X y Y, ambos de tamaño N y con valores entre 0 y K-1, y calcule el histograma conjunto (de tamaño K x K).

La información mutua de dos variables aleatorias X y Y es una medida de qué tan fácil es predecir X cuando se conoce Y, y se calcula como I(X,Y) = H(X) + H(Y) – H(X,Y),donde H(X) es la entropía de X, y H(X,Y) es la entropía conjunta de X y Y, la cual puede calcularse a partir del histograma conjunto de X y Y como:donde pij = hij / N. Escriba una función que calcule la información mutua de dos arreglos.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter